package department.fc.common;

import java.util.HashMap;
import java.util.Map;

/*
 * Attribute는 request scope에 바인딩 할 속성을 말하고
 * View 는 응답할 뷰에 대한 정보를 가질 Domain Object를 말한다. 
 */
public class AttributeAndView {
	//값으로 쓰일 것이 아니기 떄문에 equals나 헤쉬코드 시리얼라이저블 같은 요소는 필요 없다.
	
	private boolean redirect; //true는 리다이렉트 방식, flase는 디스패치 방식으로 전송함을 의미함
	private String url; //응답할 View의 url
	
	//Request scope에 바인딩할 attribute 관련 instance 변수 
	private Map<String, Object> attributes = null;
	
	
	
	//request scope에 넣을 attribute가 여러 개인 경우
	public AttributeAndView(boolean redirect, String url, Map<String, Object> attributes){
		this.redirect = redirect;
		this.url = url;
		this.attributes = attributes;
	}
	
	//requset scope에 넣을 attribute가 한 개인 경우 
	public AttributeAndView(boolean redirect, String url, String name, Object value){
		this.redirect = redirect;
		this.url = url;
		attributes = new  HashMap<String, Object>();
		attributes.put(name, value);
	}
	
	public AttributeAndView(){}
	//request scope에 넣을 attribute가 없는 경
	public AttributeAndView(boolean redirect, String url) {
		super();
		this.redirect = redirect;
		this.url = url;
	}

	
	
	public boolean isRedirect() {
		return redirect;
	}

	public void setRedirect(boolean redirect) {
		this.redirect = redirect;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public Map<String, Object> getAttributes() {
		return attributes;
	}

	public void setAttributes(Map<String, Object> attributes) {
		this.attributes = attributes;
	}

	@Override
	public String toString() {
		return "AttributeAndView [redirect=" + redirect + ", url=" + url
				+ ", attributes=" + attributes + "]";
	}
	
	



	
	
	
}
